/*ESP-Now 接收广播数据*/

#include <WiFi.h>
#include <esp_now.h>

int led1_pin=8;//GPIO8 信号指示灯


// 定义接收数据的结构体
typedef struct {
    char message[128];
    int value;
} DataPacket;

DataPacket receivedPacket;

// 接收数据的回调函数
void OnDataRecv(const esp_now_recv_info* info, const uint8_t * incomingData, int len) {
    // 复制接收到的数据到 receivedPacket 结构体
    memcpy(&receivedPacket, incomingData, len);
    // 打印接收到的数据信息
    Serial.print("Received from MAC: ");
    for (int i = 0; i < 6; i++) {
        Serial.print(info->src_addr[i], HEX);
        if (i < 5) Serial.print(":");
    }


    Serial.println();
    Serial.print("Message: ");
    Serial.println(receivedPacket.message);
    Serial.print("Value: ");
    Serial.println(receivedPacket.value);

    digitalWrite(led1_pin, HIGH);
    delay(10);
    digitalWrite(led1_pin, LOW);
    delay(10);
    digitalWrite(led1_pin, HIGH);
}



void setup() {
    Serial.begin(11520);

    // 初始化引脚为输出模式
  pinMode(led1_pin, OUTPUT);

    // 初始化 WiFi 为 Station 模式
    WiFi.mode(WIFI_STA);
  
     Serial.println("initializing ESP-NOW");
    // 初始化 ESP-NOW
    if (esp_now_init()!= ESP_OK) {
        Serial.println("Error initializing ESP-NOW");
        return;
    }

    // 注册接收回调函数
    esp_now_register_recv_cb(OnDataRecv);
}

void loop() {
    // 这里可以添加其他代码逻辑
    delay(1000);
}